It is common for electronic and communication devices to utilize hardware, software and firmware elements to provide aspects of their functionality. The hardware elements may comprise upgradable components such as CPUs, memory modules and other upgradeable and replaceable devices. Firmware stored in non-volatile electronic devices, such as EEPROMs, EPROMs, PLDs and PGAs, and volatile devices such as FPGAs and RAM, provide low level, executable code performing various calculations and operations on input and output signals depending on the program embodied in the firmware. Software, which is frequently stored non-volatile memory, but executes from volatile memory such as RAM, provides an operating code for a program which is executed on a CPU.
After an electric device is tested and released into a product any one of the hardware, software or firmware elements may be independently upgraded on a device. Upgrades may be implemented to an element to correct existing operational errors or to improve its performance. For example, in hardware a “cut and strap” may be added to change an electrical connection on one of its circuits. In software, a new routine may be added providing a new feature for the program. As upgrades are implemented to an element, they are tracked using release codes. A series of release codes document the upgrades history of the element. For a given electronic device, the elements and their associated release codes determine what versions of the hardware, software and firmware are present in the device.
It is possible that for any one element, an upgraded version may not operate with the existing elements on the device thereby requiring upgrades to those elements. For example, a hardware upgrade implemented to a CPU may require that the software and/or the firmware be upgraded. Alternatively, it is possible that the upgraded version of the element may be backwards compatible with the other existing elements, but may not be able to perform its upgraded features without an accompanying upgrade to one of the other elements. For example, an upgraded CPU providing additional D/A conversion facilities may work with the existing firmware and software on a device, but access to the D/A facilities would not be provided without an upgrade to the software. It will be appreciated that other permutations of forward and backward compatibility levels are possible for hardware, software and firmware elements of an electronic device.
Accordingly, there is a need for a system and method for tracking the compatibility of various versions of hardware, software and firmware associated with an electronic device or a system of electronic devices.